
/**
 *  背景切换插件
 */
(function($){
	
	// 初始化方法
	$.bgSwitchInit = function(settings) {
		var $this = $(this);
		
		// 该插件的默认值
		var defaults = {
			imageContainer : '',				// 容器
			bgColorImages : [], 				// 切换背景色和图片列表,格式：[{rgb:'', img:''},{rgb:'', img:''}, ....]
			imageWidth : 1024,					// 图片宽度
			imageHeight : 768,					// 图片高度
			transitionEffect : 'fade',			// 过度效果，可用值：none, fade, simpleSlide, superSlide
			sequenceMode : 'normal',			// 切换模式，可用值：normal(默认，从前到后), back(后退), random(随机)
			preloadImg : false					// 是否预加载，true为是，false为否
		};
		
		var sets = $.extend({}, defaults, settings);
		
		$this.addClass('bgSwitch-container');
		build(this);
		
		//-------------------------------------------------------
		//------------ 私有函数 -------------------------
		
		// 检查背景色和图片列表是否有值，true为有，false为空或者无值
		function validateImages() {
			if (sets.bgColorImages && sets.bgColorImages.length !== 0) {
				return true;
			}
			return false;
		}
		
		function build(o) {
			if (!validateImages()) {
				return;
			}
			
			genHtml(o);
		}
		
		function genHtml(o) {
			var code = '';
			var cur_bgswitch;
			
				$(o).wrapInner('<div class="bgstretcher-page" />').wrapInner('<div class="bgstretcher-area" />');
				code = '<div id="' + sets.imageContainer + '" class="bgstretcher"><ul>';
				if (sets.bgColorImages.length !== 0) {
					var ind = 0;
					for(i = 0; i < sets.bgColorImages.length; i++){
						if (sets.transitionEffect == 'simpleSlide' && sets.sequenceMode == 'back') {
							ind = sets.bgColorImages.length-1-i;
						} else {
							ind = i;
						}
						
						if (sets.preloadImg) {
							code += '<li><span class="image-path">' + sets.bgColorImages[ind].img + '</span></li>';
						} else {
							code += '<li class="img-loaded"><img src="' + sets.bgColorImages[ind].img + '" alt="" /></li>';
						}
					}
				}
				
				code += '</ul></div>';
				cur_bgswitch = $(o).children('.bgstretcher-area');
				$(code).prependTo(cur_bgswitch);
				cur_bgswitch.css({position: 'relative'});
				cur_bgswitch.children('.bgstretcher-page').css({'position': 'relative', 'z-index': 3});
		};
	}
	
	//----------------------------------------------------------------------------
	//-----------------------------扩展的插件方法----------------------------
	//----------------------------------------------------------------------------
	// 确保HTML加载完毕
	var docloaded = false;
	$(document).ready(function() {docloaded = true;});
	
	/**
	 *  插件的主方法，调用初始化方法
	 */
	$.fn.bgSwitch = function(options) {
		return this.each(function(){
			if (!docloaded) {
				$(document).ready(function() {
					$.bgSwitchInit(options);
				});
			} else {
				$.bgSwitchInit(options);
			}
		});
	};
	
})(jQuery);
